package com.itheima.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class CollectionTest {

    /**
     * 集合**：集合是java中提供的一种容器，可以用来存储多个数据。
     * 集合和数组既然都是容器，它们有啥区别呢？
     *
     * - 数组的长度是固定的。集合的长度是可变的。
     * - 数组中存储的是同一类型的元素，可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候，使用集合进行存储
     */
    public static void main(String[] args) {
//        demo1();
    }




    /**
     * //  (Interface)Collection -> (Interface)List : 有序、元素可重复
     *     //      List -> (Object)ArrayList
     *     //      List -> (Object)LinkedList
     *
     *     //  (Interface)Collection -> (Interface)Set : 无序、不可重复
     *     //      Set -> (Object)HashSet
     *     //      Set -> (Object)TreeSet
     *
     * java.util
     * 接口 Collection<E>
     * 所有超级接口：
     * Iterable<E>
     * 所有已知子接口：
     * BeanContext, BeanContextServices, BlockingDeque<E>,
     * BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>,
     * Queue<E>, Set<E>, SortedSet<E>
     * 所有已知实现类：
     * AbstractCollection, AbstractList, AbstractQueue,
     * AbstractSequentialList, AbstractSet, ArrayBlockingQueue,
     * ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport,
     * BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet,
     * CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet,
     * HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue,
     * LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue,
     * RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector
     */
    public static void demo1() {

        Collection<Object> collection = new ArrayList<>();
        collection.add("123");
        collection.add(true);
        collection.add(false);
        collection.add(false);
        collection.add(true);
        collection.add(123);
        collection.add(12.3);
        collection.add('A');

        System.out.println(collection.size());
        System.out.println(Arrays.toString(collection.toArray()));

        collection.clear();
        System.out.println(collection.isEmpty());

    }
}
